package lz.controls.events
{
	import flash.events.Event;
	/**
	 *SliderEvent 类定义与 Slider 组件关联的事件。这些事件包括：
	 * SliderEvent.CHANGE：在更改滑块位置以后调度。
	 * SliderEvent.THUMB_DRAG：在用户拖动滑块时调度。
	 * SliderEvent.THUMB_PRESS：在用户按下滑块时调度。
	 * SliderEvent.THUMB_RELEASE：在用户释放滑块时调度。
	 */	
	public class SliderEvent extends Event
	{
		/**
		 *数据改变 
		 */		
		public static const CHANGE:String = "change";
		/**
		 *拖动滑块 
		 */		
		public static const THUMB_DRAG:String = "thumbDrag";
		/**
		 *按下滑块 
		 */		
		public static const THUMB_PRESS:String = "thumbPress";
		/**
		 *松开滑块 
		 */		
		public static const THUMB_RELEASE:String = "thumbRelease";
		/**
		 *用于发送输入的设备类型。
		 */		
		protected var _triggerEvent:String;
		/**
		 *滑块的新值（基于其位置）。 
		 */		
		protected var _value:Number;
		/**
		 *按下以触发事件的键的键控代码。 
		 */		
		protected var _keyCode:Number;
		/**
		 *该字符串指示是按下了滑块还是按下了滑块轨道。 
		 */		
		protected var _clickTarget:String;
		
		/**
         * 获取滑块的新值（基于其位置）。
		 */
		 public function get value():Number
		 {
			return _value; 
		 }
		/**
		 * 获取按下以触发事件的键的键控代码。
		 * 键控代码是标识所按之键的数值。
		 */
		 public function get keyCode():Number 
		 {
			 return _keyCode;
		 }
		/**
         * 获取用于发送输入的设备类型。
		 * InteractionInputType.MOUSE 值指示鼠标为输入源；
		 * InteractionInputType.KEYBOARD 值指示键盘为输入源。
		 */
		 public function get triggerEvent():String 
		 {
			 return _triggerEvent;
		 }
		/**
		 * 获取一个字符串，该字符串指示是按下了滑块还是按下了滑块轨道。
		 * SliderEventClickTarget.THUMB 值指示按下了滑块；
		 * SliderEventClickTarget.TRACK 值指示按下了滑块轨道。
		 */
		 public function get clickTarget():String 
		 {
			 return _clickTarget;
		 }
		/**
		 * 使用指定的参数创建新的 SliderEvent 对象。
		 * 参数
		 * type:String — 事件类型；该值标识触发事件的动作。
		 * value:Number — 滑块的新值。
		 * clickTarget:String — 指示是按下了滑块还是按下了滑块轨道。SliderEventClickTarget.THUMB 值指示按下了滑块；SliderEventClickTarget.TRACK 值指示按下了滑块轨道。
		 * triggerEvent:String — 指示输入源的 String。InteractionInputType.MOUSE 值指示鼠标为输入源；InteractionInputType.KEYBOARD 值指示键盘为输入源。
		 * keyCode:int (default = 0) — 如果事件由按键触发，则该值为标识该键的键控代码。
		 */
		public function SliderEvent(type:String, value:Number, clickTarget:String, triggerEvent:String, keyCode:int=0)
		{
			_value = value;
			_keyCode = keyCode;
			_triggerEvent = triggerEvent;
			_clickTarget = clickTarget;
			super(type);
		}
		/**
		 *返回一个字符串，其中包含 SliderEvent 对象的所有属性。
		 * 字符串的格式如下：
		 * [SliderEvent type=value value=value bubbles=value cancelable=value keycode=value triggerEvent=value clickTarget=value]
		 */
		override public function toString():String 
		{
			return formatToString("SliderEvent", "type", "value", "bubbles", "cancelable", "keyCode", "triggerEvent", "clickTarget");
		}
		/**
		 *创建 SliderEvent 对象的副本，并设置每个参数的值以匹配原始参数值。
		 */
		override public function clone():Event
		{
			return new SliderEvent(type, _value, _clickTarget, _triggerEvent, _keyCode);
		}
	}
}